const { User } = require("../../database");
const jwt = require('jsonwebtoken');
const { secretKey } = require('../config/config');
const { Op } = require('sequelize');
const multer = require('multer');
const xlsx = require('xlsx');

exports.login = async (req, res) => {
  const { username, password } = req.body
  if (username && password) {
    try {
      const tempUser = await User.findOne({ where: { username: username } });
      if (tempUser) {
        if (tempUser.dataValues.password === password) {
          const tokenStr = jwt.sign({ id: tempUser.dataValues.id }, secretKey, { expiresIn: '86400s' }) // jwt过期时间设置为一天
          res.send({
            status: 200,
            message: '登录成功！',
            user: { ...tempUser.dataValues },
            token: tokenStr,
          })
        }
        else {
          res.send({
            status: 500,
            message: '密码错误！'
          })
        }
      }
      else {
        res.send({
          status: 404,
          message: '用户不存在！'
        })
      }
    }
    catch (err) {
      console.log(err);
      res.status(500).send('Failed to login');
    }
  }
}

//新建账户
exports.register = async (req, res) => {
  const { username, password } = req.body
  if (username && password) {
    try {
      const tempUser = await User.findOne({ where: { username: username } });
      if (tempUser) {
        res.send({
          status: 304,
          message: '用户已存在！'
        })
      } else {
        const newUser = await User.create({
          username: username,
          password: password,
          // jobNumber: jobNumber,
          // name: name
        })
        if (newUser) {
          res.send({
            status: 201,
            message: '注册成功！',
          })
        }
        else {
          res.send({
            status: 500,
            message: '注册失败！',
          })
        }
      }
    } catch (err) {
      console.log(err);
      res.status(500).send('Failed to register');
    }
  }
}

// 根据旧密码修改密码
exports.updatePassword = async (req, res) => {
  const { password, oldPassword } = req.body
  console.log(password, oldPassword);

  const { id: userId } = req.user
  try {
    const user = await User.findOne({
      where: {
        id: userId
      }
    })
    if (user.dataValues.password === oldPassword) {
      await User.update({
        password: password
      }, {
        where: {
          id: userId
        }
      })
      res.send({
        status: 200,
        message: '修改密码成功！',
      })
    }
    else {
      res.send({
        status: 500,
        message: '密码错误！',
      })
    }
  } catch (err) {
    console.log(err);
    res.status(500).send('修改密码失败');
  }
}

// const { Users, Recipes } = require('../../database'); // 假设你有一个 User 模型
// // 模拟登录
// exports.login = (req, res) => {
//   const { username, password } = req.body;
//   // 这里应该有实际的用户验证逻辑
//   if (username === 'admin' && password === 'password') {
//     res.status(200).json({ message: '登录成功' });
//   } else {
//     res.status(401).json({ message: '用户名或密码错误' });
//   }
// };

// // 模拟注册
// exports.register = (req, res) => {
//   const { username, password } = req.body;
//   // 这里应该有实际的用户注册逻辑
//   if (username && password) {
//     res.status(201).json({ message: '注册成功' });
//   }
//   else {
//     res.status(400).json({ message: '用户名或密码为空' });
//   }
// }

// // 模拟获取用户信息
// exports.getUserInfo = (req, res) => {
//   const userId = req.params.id; // 假设用户 ID 从 URL 参数中获取
//   // 这里应该有实际的用户信息获取逻辑
//   res.status(200).json({ userId, username: 'admin' }); // 示例返回数据
// }

